package io.halo.payment.enums;

import java.util.Arrays;
import java.util.Optional;

/**
 * 微信API枚举接口
 *
 * @author: austin
 * @since: 2023/1/10 14:48
 */
public interface BaseApi {

    /**
     * 获取枚举url
     */
    String getUrl();

    /**
     * 获取详细描述信息
     */
    String getDesc();

    /**
     * 根据url获取枚举值
     *
     * @param enumClass 枚举class
     * @param url       url
     * @param <E>       枚举类
     * @return          枚举值
     */
    static <E extends Enum<?> & BaseApi> Optional<E> urlOf(Class<E> enumClass, String url) {
        return Arrays.stream(enumClass.getEnumConstants()).filter(e -> url.equals(e.getUrl())).findFirst();
    }
}
